package com.naiterui.ehp.bs.cms.modules.inventory.vo;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.naiterui.ehp.bs.cms.common.json.Dict;

import lombok.Data;

import io.swagger.annotations.ApiModelProperty;

/**
 * <pre>
 *      库存流水
 * </pre>
 *
 * @author 王泽浩
 * @date 2019/10/9 2:11 下午
 * @since 1.0.0
 */
@Data
public class InventoryWaterVO implements java.io.Serializable {


    /**
     * 变更类型 增加欲占
     */
    public static final int CHANGE_TYPE_WILL = 1;

    /**
     * 变更类型 扣减欲占，增加占用
     */
    public static final int CHANGE_TYPE_TAKE_UP = 2;

    /**
     * 变更类型 扣减占用，扣减实物库存
     */
    public static final int CHANGE_TYPE_PHYSICAL = 3;

    /**
     * 变更类型 修改实物库存
     */
    public static final int CHANGE_TYPE_MODIFY_PHYSICAL = 4;

    /**
     * 变更类型 扣减欲占
     */
    public static final int CHANGE_TYPE_REJECT = 5;

    /**
     * 变更类型 扣减占用
     */
    public static final int CHANGE_TYPE_SUB_TAKE_UP = 6;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "时间")
    private Date date;

    @ApiModelProperty(value = "单据编号")
    private String orderSn;

    /**
     * 商品sku码
     */
    @ApiModelProperty(value = "商品sku码")
    private String skuNumber;

    /**
     * 业务类型
     */
    @Dict(type = "inventory-log-business-type")
    @ApiModelProperty(value = "业务类型")
    private Integer businessType;

    @ApiModelProperty(value = "变更类型")
    private Integer changeType;

    /**
     * 变更数量
     */
    @ApiModelProperty(value = "变更数量")
    private Integer quantity;

    /**
     * 商品名称
     */
    @ApiModelProperty(value = "商品名称")
    private String skuName;

    /**
     * 药店名称
     */
    @ApiModelProperty(value = "药店名称")
    private String warehouseName;

    /**
     * 药店编码
     */
    @ApiModelProperty(value = "药店编码")
    private String warehouseCode;

    /**
     * 原始实物库存
     */
    @ApiModelProperty(value = "原始实物库存")
    private Long beforePhysicalQuantity;

    /**
     * 实物库存结存
     */
    @ApiModelProperty(value = "实物库存结存")
    private Long afterPhysicalQuantity;

    /**
     * 原始欲占库存数量
     */
    @ApiModelProperty(value = "原始欲占库存数量")
    private Long beforeWillQuantity;

    /**
     * 预占库存结存
     */
    @ApiModelProperty(value = "预占库存结存")
    private Long afterWillQuantity;

    /**
     * 原始占用库存
     */
    @ApiModelProperty(value = "原始占用库存")
    private Long beforeTakeUpQuantity;

    /**
     * 占用库存结存
     */
    @ApiModelProperty(value = "占用库存结存")
    private Long afterTakeUpQuantity;
}
